package com.chenjt.jvm.first.nine_String;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

/**
 * 注释：
 * jdk6默认值是1009，且可以随意更改
 * -XX:StringTableSize=1009
 *
 * jdk7默认是60013，且可以随意更改
 *
 * jdk8，1009是可设置的最小值
 *
 * @author chenjt
 * @date 2025/6/12 17:45
 */
public class StringTest2 {

    public static void main(String[] args) {
        // 测试StringTableSize参数
//        System.out.println("随便写点什么");
//
//        try {
//            TimeUnit.SECONDS.sleep(1000);
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }

        /**
         * 读取words.txt中的所有字符串添加进字符串常量池，
         * 测试不同的StringTableSize参数，查看运行时间
         */
        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader("words.txt"));
            long start = System.currentTimeMillis();
            String data;
            while((data = br.readLine()) != null){
                data.intern();// 如果字符串常量池中没有对应data字符串的话，则在常量池中生成
            }
            long end = System.currentTimeMillis();

            /**
             * -XX:StringTableSize=1009: 1078ms
             * -XX:StringTableSize=10009: 94ms
             */
            System.out.println("花费的时间为：" + (end - start) + "ms");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(br != null){
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }

}
